#pragma once
#ifndef LF_LFH
#define LF_LFH


typedef int LFint;
typedef unsigned int LFuint;
typedef int LFsizei;
typedef unsigned int LFuint;
typedef unsigned int LFenum;
typedef bool LFbool;

#define LF_NULL							  0xFFFF

#define LF_GRIDSIZE                       0x0B00

/* Targets */
#define LF_SLAB_2D		                  0x0D00

/* PixelFormat */
#define LF_RGB							  0x1907

/* DataType */
/*#define GL_BYTE                           0x1400
#define GL_UNSIGNED_BYTE                  0x1401
#define GL_SHORT                          0x1402
#define GL_UNSIGNED_SHORT                 0x1403
#define GL_INT                            0x1404*/
#define LF_UNSIGNED_INT                   0x1405
/*#define GL_FLOAT                          0x1406
#define GL_2_BYTES                        0x1407
#define GL_3_BYTES                        0x1408
#define GL_4_BYTES                        0x1409
#define GL_DOUBLE                         0x140A*/


/* GetTarget */
//#define LF_LIGHT_FIELD_SPHERICAL                    0x0DE0
//#define LF_LIGHT_FIELD_PLANAR                       0x0DE1


// Initialize Light Field Library
void lfInit();
//Capture Module
void lfGenLightFields(LFsizei n, unsigned int *lightFields);
void lfBindLightField(LFenum target, LFuint lightFields);
void lfSetParam(LFenum target, LFenum pname, LFsizei *size);
void lfLoad(LFenum target, LFenum internalFormat, LFsizei width, LFsizei height, LFuint u, LFuint v, LFenum format, LFenum type, void *data);
void lfDeleteLightFields();


#endif